Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

London 11 | Pezhman-Azizi | Data-Flow | Book-Library #129

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

Pezhman-Azizi
Copy link

Learners, PR Template

Self checklist

  • I have committed my files one by one, on purpose, and for a reason
  • I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
  • I have tested my changes
  • My changes follow the style guide
  • My changes meet the requirements of this task

Changelist

Briefly explain your PR.

Questions

Ask any questions you have for your reviewer.

@Pezhman-Azizi Pezhman-Azizi added the Needs Review Participant to add when requesting review label Jan 9, 2025
Copy link

@cjyuan cjyuan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In terms of input validation,

  1. Are all input properly checked?
  2. Can .value be null?
  3. What if a user enters only space characters in the "title" input field?
  4. What if a users enters -1 or 3.1416 in the "pages" input field?

There are also some errors in index.html.

Comment on lines 60 to 68
let cell1 = row.insertCell(0);
let cell2 = row.insertCell(1);
let cell3 = row.insertCell(2);
let cell4 = row.insertCell(3);
let cell5 = row.insertCell(4);

cell1.innerHTML = myLibrary[i].title;
cell2.innerHTML = myLibrary[i].author;
cell3.innerHTML = myLibrary[i].pages;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why rewrite these statements with "less informative" variable names?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made the following improvements based on your suggestions:

Removed the redundant == null checks since input .value is never null.
Added .trim() to handle whitespace-only inputs for title and author.
Improved the validation for pages to ensure it’s a positive whole number.
Replaced generic variable names like cell1 with more descriptive ones (e.g., titleCell).
Updated alert messages to give clearer instructions when inputs are invalid.

delBut.className = "btn btn-warning";
delBut.innerHTML = "Delete";
delBut.addEventListener("clicks", function () {
delButton.id = i + 5;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Do you think the value assigned to the id attribute is unique?
  • Do you think there is a need to assign any id attribute to delButton?
  • Do you think there is a need to assign any id attribute to changeBut at line 72?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for pointing that out! I've made the following improvements based on your feedback:

Removed unnecessary id attributes from delButton and changeBut since they weren't being used anywhere.
Simplified the logic by relying on the loop index (i) for context, which avoids potential ID conflicts and makes the code cleaner.
Updated the button logic to be more concise and easier to follow.

Comment on lines 51 to 55

//delete old table
for (let n = rowsNumber - 1; n > 0; n-- {
for (let n = rowsNumber - 1; n > 0; n--) {
table.deleteRow(n);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you think of a more efficient way to remove all rows (except the heading) in the table?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’ve replaced the for loop with a more efficient approach by resetting the tbody directly. This clears all rows except the heading in a single operation, reducing DOM manipulations and improving performance. Let me know if you have further thoughts!

cell4.appendChild(changeBut);

let readStatus = myLibrary[i].check ? "Yes" : "No";
changeBut.innerHTML = readStatus;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Inconsistent variable names) Why name one variable changeBut but the other delButton?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

renamed the variables to maintain consistent and descriptive naming. changeBut is now readButton, and delButton is now deleteButton. This makes the code clearer and aligns the naming with their respective functionalities

@cjyuan cjyuan added Reviewed Volunteer to add when completing a review and removed Needs Review Participant to add when requesting review labels Jan 16, 2025
- Added checks for whitespace-only inputs and invalid pages
- Replaced generic variable names with meaningful ones
- Enhanced error messages for better user feedback
- Simplified button logic using loop index
- Cleaned up code by avoiding redundant attributes
- Replaced multiple deleteRow calls with a single tbody replacement
- Optimized DOM manipulations for better performance
- changeBut → readButton
- delButton → deleteButton
Aligned naming with functionality for better readability.
@cjyuan
Copy link

cjyuan commented Jan 17, 2025

Good job. I was just pointing out things that can be improved, they are not a requirement. I am impressed of your initiative and the improvements you made. Feel free to mark this as Completed any time.

@Pezhman-Azizi
Copy link
Author

Pezhman-Azizi commented Jan 17, 2025

Thanks for your kind words @cjyuan. Was happy to learn. Just marked it as complete

@Pezhman-Azizi Pezhman-Azizi added Complete Participant to add when work is complete and review comments have been addressed and removed Reviewed Volunteer to add when completing a review labels Jan 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Complete Participant to add when work is complete and review comments have been addressed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants